Field
The disclosed embodiments relate to computing systems that support garbage-collection operations to automatically reclaim memory locations that are no longer in use. More particularly, the disclosed embodiments related to a technique that supports efficiently classifying object references and quickly reusing memory in a computing environment that supports concurrent garbage collection.
Related Art
Many computing environments provide garbage-collection system to automatically reclaim memory locations, which are occupied by objects that are no longer being used by an application. Garbage-collection systems free the programmer from having to explicitly specify which objects to deallocate and return the memory system. However, applications often have to pause while waiting for garbage-collection operations to complete. One way to reduce these pause times is to use a garbage collector that supports concurrent marking and concurrent relocation. By performing most of the work in the concurrent phases, only a small portion of the garbage-collection work has to be done during time periods that can cause applications to pause.
Another aspect of concurrent garbage collectors is that, unlike non-concurrent garbage collectors, application threads can continue to allocate new objects while the garbage collector is running. This means that heap usage can potentially keep growing while the garbage collector is running, which in turn means that the garbage collector's ability to quickly reclaim and reuse memory becomes important to keep the overall heap size down.
In spite of the performance advantages of concurrent garbage-collectors, existing concurrent garbage-collection implementations continue to adversely affect application performance by: (1) interfering with and/or slowing execution of the application; and (2) preventing the reuse of reclaimed memory until all of the pointers in the reclaimed memory have been updated.